package com.itlong.cloud.sdk.dao;


import com.itlong.cloud.POJO.PO.AppAuthRelationsPO;
import com.itlong.cloud.POJO.PO.AppUserInfoPO;
import com.itlong.cloud.POJO.PO.AppUserProjectPO;
import com.itlong.cloud.POJO.PO.AppUserRoomPO;
import com.itlong.cloud.abstracts.IAbstractBaseDao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
* <desc>
*    SDK服务端住户持久层
* </desc>
*
* @createDate 2017-11-17
*/
@Mapper
@Repository
public interface ISDKServerOldAppUserDao extends IAbstractBaseDao<AppUserInfoPO> {


    /**
     * <desc>
     *      通过手机号查询App用户
     * <desc/>
     * @param    phoneNum   被查询的手机号
     * @return      查询出的的人员结果
     * @author Biao.R
     * @createDate 2017/11/17
     */
    AppUserInfoPO getAppUserByPhone(@Param("phoneNum") String phoneNum);

    /**
     * <desc>
     *      根据参数查询用户小区关联表
     * <desc/>
     * @param       params  查询参数
     * @return      用户小区关联对象集
     * @author Biao.R
     * @createDate 2017/11/20
     */
    List<AppUserProjectPO> getUserProject(Map<String, Object> params);

    /**
     * <desc>
     *      保存
     * </desc>
     *
     * @param     params 数据参数
     * @return    添加个数
     * @author Biao.R
     * @createDate 2017/10/10
     */
    Integer save(Map<String, Object> params);

    /**
     * <desc>
     *      修改
     * </desc>
     *
     * @param params 数据参数
     * @return      更新个数
     * @author Biao.R
     * @createDate 2017/10/10
     */
    Integer update(Map<String, Object> params);

    /**
     * <desc>
     *      更新用户小区关联表
     * </desc>
     *
     * @param userProjectPO      待更新的用户小区关联对象
     * @return      更新个数
     * @author Biao.R
     * @createDate 2017/10/10
     */
    Integer updateUserProject(AppUserProjectPO userProjectPO);

    /**
     * <desc>
     *      根据参数查询用户房间关联表
     * <desc/>
     * @param   params  查询参数
     * @return  List<AppUserRoomPO>    查询出的用户房间结果集
     * @author Biao.R
     * @createDate 2017/11/21
     */
    List<AppUserRoomPO> getUserRoomByParam(Map<String, Object> params);

    /**
     * <desc>
     *       批量添加用户房间信息表
     * <desc/>
     * @param   saveMapList  待添加的对象转换成map后的集合
     * @return  添加的个数
     * @author Biao.R
     * @createDate 2017/11/21
     */
    Integer batchSaveUserRoom(List<Map<String,Object>> saveMapList);

    /**
     * <desc>
     *       批量更新用户房间信息表
     * <desc/>
     * @param   userRoomPOList  待更新的对象集合
     * @return  更新的个数
     * @author Biao.R
     * @createDate 2017/11/21
     */
    Integer batchUpdateUserRoom(List<AppUserRoomPO> userRoomPOList);

    /**
     * <desc>
     *      根据参数查询用户授权关系表
     * <desc/>
     * @param   paramMap   查询参数
     * @return  查询出的授权关系集
     * @author Biao.R
     * @createDate 2017/11/21
     */
    List<AppAuthRelationsPO> getAuthRelationsByParams(Map<String, Object> paramMap);

    /**
     * <desc>
     *     批量更新用户授权关系表
     * <desc/>
     * @param   updateAuthRelationList  待更新的对象转换成map后的集合
     * @return  更新的个数
     * @author Biao.R
     * @createDate 2017/11/21
     */
    Integer batchSaveAuthRelations(List<Map<String,Object>> updateAuthRelationList);

    /**
     * <desc>
     *      根据userId查询APP用户
     * <desc/>
     * @param   userId  待查询的userId
     * @return  AppUserInfoPO  查询出的APP用户
     * @author Biao.R
     * @createDate 2017/11/21
     */
    AppUserInfoPO getUserByUserId(@Param("userId") String userId);

    /**
     * <desc>
     *      分页查询权限关系表集合
     * <desc/>
     * @param       params  待查询的参数集
     * @return      返回权限关系结果集
     * @author Biao.R
     * @createDate 2017/11/22
     */
    List<AppAuthRelationsPO> getAuthRelationsPageList(Map<String, Object> params);

    /**
     * <desc>
     *      分页查询权限关系表总数
     * <desc/>
     * @param       params  待查询的参数集
     * @return      返回权限关系结果总数
     * @author Biao.R
     * @createDate 2017/11/22
     */
    Integer getAuthRelationsPageCount(Map<String, Object> params);


    /**
     * <desc>
     *      更新App用户权限关系表
     * <desc/>
     * @param   authRelationsPO     待更新的用户权限关系表
     * @return  更新数量
     * @author Biao.R
     * @createDate 2017/12/4
     */
    Integer updateAuthRelations(AppAuthRelationsPO authRelationsPO);

}
